package com.culture.bootdemo.算法.leetcode;

import com.alibaba.fastjson.JSON;

/**
 * @Author: wen
 * @DateTime: 2025-04-14 11:09
 * @Description:  双指针从后往前合并:因为它是在原地合并的。需要注意的是，nums1 的容量必须足够大（至少为 m + n）
 *   时间复杂度是 O(m + n)
 *   空间复杂度为 O(1)
 **/
public class 合并有序数组 {

    public static void main(String[] args) {

        int[] num1 = {1, 2, 8, 0, 0, 0};
        int[] num2 = {2, 3, 6};
        int m = 3;
        int n = 3;

        int p1 = m - 1;
        int p2 = n - 1;
        int p = m + n - 1;

        while (p1 >= 0 && p2 >= 0) {
            if (num1[p1] > num2[p2]) {
                num1[p] = num1[p1];
                p1--;
            } else {
                num1[p] = num2[p2];
                p2--;
            }
            p--;
        }

        while (p2 >= 0) {
            num1[p] = num2[p2];
            p2--;
            p--;
        }
        System.out.println(JSON.toJSONString(num1));

    }
}
